package com.ihr360.payroll.model.dto.salary.projection;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.ihr360.commons.model.type.TaxRole;
import com.ihr360.payroll.model.dto.salary.tax.SalaryTaxTable;
import com.ihr360.payroll.model.vo.SalaryTaxTypeVO;
import com.ihr360.payroll.model.vo.SalaryTaxVO;
import com.ihr360.payroll.model.vo.TaxDivisionVO;
import com.ihr360.rest.core.Ihr360Projection;

import java.util.List;

/**
 * @author Richey.liu
 */
@Ihr360Projection(name = "salaryTaxTable", types = {SalaryTaxTable.class})
public interface SalaryTaxTableProjection {

    Long getId();

    String getCode();

    TaxRole getTaxRole();

    boolean isAffordByStaff();

    boolean isEnabled();

    String getRemark();

    @JsonProperty("division")
    TaxDivisionVO getTaxDivisionVO();

    @JsonProperty("type")
    SalaryTaxTypeVO getSalaryTaxTypeVO();

    @JsonProperty("salaryTaxes")
    List<SalaryTaxVO> getSalaryTaxVOs();

}
